package org.jsola.hr.service;

import kong.unirest.JsonNode;
import org.jsola.admin.vo.HeaderFieldsVO;
import org.jsola.core.Page;
import org.jsola.core.service.IService;
import org.jsola.hr.dao.IEmpSocInfoDAO;
import org.jsola.hr.dto.*;
import org.jsola.hr.entity.*;
import org.jsola.hr.query.EmpSocInfoQuery;
import org.jsola.hr.query.HeaderFieldsSocQuery;
import org.jsola.hr.query.SocPlanDispatchUserQuery;
import org.jsola.hr.vo.*;
import org.jsola.user.core.TokenUser;

import java.io.File;
import java.util.Date;
import java.util.List;
import java.util.Map;


/**
 * 员工参保信息表
 *
 * @author zhr
 */
public interface IEmpSocInfoService extends IService<IEmpSocInfoDAO, EmpSocInfoDO> {

    /**
     * 计算金额
     *
     * @param empSocInfoAddBatchDTO 增员参数
     * @return 计算之后的参数
     */
    EmpSocInfoAddBatchDTO amount(EmpSocInfoAddBatchDTO empSocInfoAddBatchDTO);

    /**
     * 修改员工参保信息表
     *
     * @param empSocInfoUpdateDTO 修改员工参保信息表DTO
     * @param tokenUser           当前用户
     * @return 更新数量
     */
    int update(EmpSocInfoUpdateDTO empSocInfoUpdateDTO, TokenUser tokenUser);


    /**
     * 批量删除员工参保信息表，物理删除，更新is_valid字段，从回收站删除
     *
     * @param tokenUser     当前用户
     * @param empSocInfoIds 员工参保信息表id
     * @return 删除数量
     */
    int deleteByIds(TokenUser tokenUser, String... empSocInfoIds);

    /**
     * 根据员工参保信息表id查找
     *
     * @param empSocInfoId 员工参保信息表id
     * @param siteId       所属站点id
     * @return 员工参保信息表详情信息
     */
    EmpSocInfoVO selectById(String empSocInfoId, String siteId);

    /**
     * 查询员工参保信息表
     *
     * @param empSocInfoQuery 查询条件
     * @param siteId          所属站点id
     * @return 员工参保信息表列表信息
     */
    List<EmpSocInfoListVO> select(EmpSocInfoQuery empSocInfoQuery, String siteId);

    /**
     * 查询员工参保信息表记录数
     *
     * @param empSocInfoQuery 查询条件
     * @param siteId          所属站点id
     * @return 员工参保信息表记录数
     */
    int selectCount(EmpSocInfoQuery empSocInfoQuery, String siteId);

    /**
     * 分页查询员工参保信息表
     *
     * @param empSocInfoQuery 查询条件
     * @param siteId          所属站点id
     * @return 员工参保信息表列表信息
     */
    Page<EmpSocInfoListVO> selectPage(EmpSocInfoQuery empSocInfoQuery, String siteId);


    /**
     * 根据员工参保信息表id查找
     *
     * @param empSocInfoId 员工参保信息表id
     * @param siteId       所属站点id
     * @return 员工参保信息表
     */
    EmpSocInfoDO selectDOById(String empSocInfoId, String siteId);

    /**
     * 查询员工参保信息表
     *
     * @param empSocInfoQuery 查询条件
     * @param siteId          所属站点id
     * @return 员工参保信息表列表
     */
    List<EmpSocInfoDO> selectDO(EmpSocInfoQuery empSocInfoQuery, String siteId);

    /**
     * 导入批量编辑Excel
     *
     * @param file      excel
     * @param monthId   参保月
     * @param tokenUser 当前用户
     * @return 错误信息
     */
    BulkEditWrongsVO bulkEditImport(File file, String monthId, TokenUser tokenUser);

    /**
     * 批量编辑入库
     *
     * @param successList 入库数据
     * @param tokenUser   当前用户
     * @return 错误信息
     */
    void bulkEdit(List<BulkEditCheckWrongsDTO> successList, TokenUser tokenUser);

    /**
     * 批量编辑导出错误数据
     *
     * @param bulkEditWrongsVO 错误数据
     * @param tokenUser        当前用户
     * @return excel路径
     */
    String exportErrorListPath(BulkEditWrongsVO bulkEditWrongsVO, TokenUser tokenUser);

    /**
     * 查询员工参保月账单列表
     *
     * @param empSocInfoQuery 查询条件
     * @param tokenUser       当前用户
     * @return 员工参保月账单列表
     */
    List<EmpSocInfoListVO> getEmpSocInfoMonthList(EmpSocInfoQuery empSocInfoQuery, TokenUser tokenUser);

    /**
     * 分页查询员工参保信息表
     *
     * @param empSocInfoQuery 查询条件
     * @param siteId          站点id
     * @return 查询结果：参保信息列表
     */
    Page<EmpSocInfoListVO> selectPageEmpSocInfo(EmpSocInfoQuery empSocInfoQuery, String siteId);

    /**
     * 分页查询员工参保信息表(社保回款使用)
     *
     * @param empSocInfoQuery 查询条件
     * @param siteId          站点id
     * @return 查询结果：参保信息列表
     */
    Page<EmpSocInfoListVO> selectPageEmpSocBack(EmpSocInfoQuery empSocInfoQuery, String siteId);


    /**
     * 参保管理导出查询的数据
     *
     * @param empSocInfoQuery 导出参数
     * @param siteId          站点
     * @return 参保信息
     */
    List<EmpSocInfoListVO> selectEmpSocInfoByExport(EmpSocInfoQuery empSocInfoQuery, String siteId);

    /**
     * 甲方端小程序社保列表页
     *
     * @param empSocInfoQuery 查询参数
     * @param siteId          站点
     * @return 社保列表
     */
    List<EmpSocInfoListVO> jfEmpSocInfoList(EmpSocInfoQuery empSocInfoQuery, String siteId);

    /**
     * 查询员工参保金额统计
     *
     * @param year      年
     * @param month     月
     * @param siteId    站点id
     * @param companyId 公司Id
     * @param monthId   参保月Id
     * @return 金额统计信息
     */
    EmpSocInfoListVO getAmount(String year, String month, String companyId, String monthId, String siteId);

    /**
     * 分页查询新增员工参保信息表
     *
     * @param empSocInfoQuery 查询条件
     * @param siteId          站点id
     * @return 查询结果：参保信息列表
     */
    Page<EmpSocInfoListVO> selectPageAddEmpSocInfo(EmpSocInfoQuery empSocInfoQuery, String siteId);

    /**
     * 修改参保金额基数
     *
     * @param tokenUser              当前用户信息
     * @param empSocItemListBatchDTO 需要修改的参数
     * @return 修改结果
     */
    Boolean setCardinality(TokenUser tokenUser, EmpSocItemListBatchDTO empSocItemListBatchDTO);

    /**
     * 修改公司或者个人的参保金额
     *
     * @param tokenUser              当前用户信息
     * @param empSocItemListBatchDTO 需要修改的信息
     * @return 返回修改结果
     */
    Boolean setAmount(TokenUser tokenUser, EmpSocItemListBatchDTO empSocItemListBatchDTO);

    /**
     * 新增员工参保次月账单
     *
     * @param empSocInfoQuery 次月参数
     * @param tokenUser       当前用户信息
     * @return 返回执行结果
     */
    String saveEmpSocInfoNextMonth(EmpSocInfoQuery empSocInfoQuery, TokenUser tokenUser);

    /**
     * 创建次月账单时,查询公司下增减员计划是否有这个月的有就把记录给塞进来
     *
     * @param empSocMonthDO 参保月
     * @param tokenUser     当前用户
     */
    void updateMonthId(EmpSocMonthDO empSocMonthDO, TokenUser tokenUser);

    /**
     * 某个员工的参保记录
     *
     * @param empSocInfoQuery 员工信息
     * @param siteId          站点id
     * @return 返回查询结果列表
     */
    Page<EmpSocInfoListVO> selectEmpSocInfoByEmpId(EmpSocInfoQuery empSocInfoQuery, String siteId);

    /**
     * 某个员工的参保记录的年份列表
     *
     * @param empId     员工id
     * @param companyId 公司id
     * @param siteId    站点id
     * @return 返回年份集合
     */
    List<String> selectYearByEmpId(String empId, String companyId, String siteId);

    /**
     * 按照月统计主表id逻辑删除数据
     *
     * @param monthId   月统计表id
     * @param tokenUser 当前用户信息
     * @return 返回状态
     */
    Integer updateEmpSocInfoByMonthId(String[] monthId, TokenUser tokenUser);

    /**
     * 编辑参保方案时修改员工参保信息
     *
     * @param empSocInfoAddDTO 编辑内容
     * @param time             时间集合
     * @param tokenUser        当前用户
     * @return 返回状态
     */
    Integer updateSocInfoByProgId(EmpSocInfoAddDTO empSocInfoAddDTO, List<String> time, TokenUser tokenUser);

    /**
     * 查询要修改的员工参保信息
     *
     * @param progId 参保方案id
     * @param siteId 站点id
     * @param time   时间
     * @return 返回列表
     */
    List<EmpSocInfoListVO> selectInfoByProgId(String progId, String siteId, List<String> time);

    /**
     * 将不缴纳公积金的删除
     *
     * @param empSocInfoListVOS 删除参数
     * @param tokenUser         当前用户
     * @return 执行结果
     */
    Integer updateItemByProgPayProvidentFund(List<EmpSocInfoListVO> empSocInfoListVOS, TokenUser tokenUser);

    /**
     * 编辑参保方案时修改员工参保信息子表
     *
     * @param list      编辑内容集合
     * @param tokenUser 当前用户信息
     * @return 修改结果
     */
    Integer updateItemByEmpSocId(List<EmpSocItemDO> list, TokenUser tokenUser);

    /**
     * 查询使用某参保记录的人员
     *
     * @param progId 参保方案id
     * @param siteId 站点id
     * @return 参保记录
     */
    List<EmpSocInfoListVO> selectTimeInfoByProgId(String progId, String siteId);

    /**
     * 查询传入公司下的所有参保记录
     *
     * @param companyId 公司Id
     * @param siteId    站点id
     * @return 员工参保信息列表
     */
    List<EmpSocInfoDO> selectInfoByCompanyId(String companyId, String siteId);

    /**
     * 查询月供在某月的社保公积金
     *
     * @param yearly    年
     * @param monthly   月
     * @param empIds    员工Id
     * @param companyId 公司Id
     * @param siteId    站点
     * @return 参保信息
     */
    List<EmpSocInfoDO> selectByMonthAndEmpIds(Integer yearly, Integer monthly, List<String> empIds, String companyId, String siteId);

    /**
     * 查询某月的社保公积金子项
     *
     * @param yearly    年
     * @param monthly   月
     * @param companyId 公司id
     * @param empIds    员工Id
     * @param siteId    站点id
     * @return 社保公积金子项
     */
    List<EmpSocInfoVO> selectItemByMonthAndEmpIds(Integer yearly, Integer monthly, String companyId,
                                                  List<String> empIds, String siteId);

    /**
     * 查询某个人的参保记录,根据gmtCreate排序
     *
     * @param empId     员工Id
     * @param companyId 公司Id
     * @param siteId    站点
     * @return 参保记录列表
     */
    EmpSocInfoDO getEmpSocInfoByEmpId(String empId, String companyId, String siteId);

    /**
     * 退费
     *
     * @param empSocInfoAddDTO 退费参数
     * @param tokenUser        当前用户
     * @return 退费回显
     */
    EmpSocInfoVO refunds(EmpSocInfoAddDTO empSocInfoAddDTO, TokenUser tokenUser);

    /**
     * 查询某个人的参保记录,按创建时间排序
     *
     * @param empId     员工Id
     * @param siteId    站点Id
     * @param companyId 公司Id
     * @return 参保记录
     */
    List<EmpSocInfoDO> getEmpSocInfoByEmpIdOrderByGmtCreate(String empId, String siteId, String companyId);

    /**
     * 花名册查询员工参保记录
     *
     * @param empId     员工Id
     * @param companyId 公司d
     * @param tokenUser 当前用户
     * @return 参保记录
     */
    EmpSocInfoVO getEmpSocInfoWithEmpInfo(String empId, String companyId, TokenUser tokenUser);

    /**
     * 查询某个人的不是补差和补收的参保记录,根据gmtCreate排序
     *
     * @param empId     员工Id
     * @param companyId 公司Id
     * @param planFlag  增减员计划标识
     * @param siteId    站点
     * @return 员工Id列表
     */
    List<EmpSocInfoDO> getEmpSocInfoNormal(String empId, String companyId, String siteId, Boolean planFlag);

    /**
     * 根据 monthId 查询某个月的参保人员
     *
     * @param companyId 公司Id
     * @param monthId   月统计表Id
     * @param tokenUser 当前用户
     * @return 参保人员
     */
    List<EmpSocInfoDO> selectEmpInfoByMonthId(String companyId, String monthId, TokenUser tokenUser);

    /**
     * 根据 monthId列表 查询某个月的参保人员
     *
     * @param monthIdList monthId列表
     * @param tokenUser   当前用户
     * @return 参保信息列表
     */
    List<EmpSocInfoDO> selectEmpInfoByMonthIdList(List<String> monthIdList, TokenUser tokenUser);

    /**
     * 管理后台查询社保统计
     *
     * @param tokenUser     当前用户
     * @param year          年
     * @param month         月
     * @param companyIdList 公司Id列表
     * @param siteId        站点
     * @return 人员状态, 和这个人员状态对应的数量
     */
    Map<String, Long> selectHomeSocCount(TokenUser tokenUser, String year, String month, List<String> companyIdList, String siteId);

    /**
     * 判断员工是否有未确认的参保信息
     *
     * @param empId 员工Id
     * @return 存在与否
     */
    Boolean empIsExistIncreasePlan(String empId);


    /**
     * 根据 年 月 MonthId 缴费类型 公司 站点 可以查询到唯一一条参保记录
     *
     * @param year        年
     * @param month       月
     * @param payCostType 缴费类型
     * @param empId       员工Id
     * @param monthId     参保月份
     * @param companyId   公司Id
     * @param siteId      站点
     * @return 唯一一条参保管理信息
     */
    EmpSocInfoDO selectEmpSocInfoByYearMonthEmpIdPayCostTypeMonthId(String year, String month, Integer payCostType, String empId,
                                                                    String monthId, String companyId, String siteId);

    /**
     * 查询某员工某参保月的确认过的所有参保记录
     *
     * @param empId       员工Id
     * @param monthIdList 参保月Id列表
     * @param companyId   公司Id
     * @param valid       是否有效
     * @param siteId      站点
     * @return 参保管理Id
     */
    List<EmpSocInfoDO> selectEmpSocInfoByMonthIdAndEmpId(String empId, List<String> monthIdList, String companyId, Boolean valid, String siteId);

    /**
     * 查询某参保方案的使用人员
     *
     * @param socProgId 参保方案Id
     * @param companyId 公司Id
     * @param siteId    站点
     * @return 员工Id列表
     */
    List<String> selectEmpListWithSocProgId(String socProgId, String companyId, String siteId);


    /**
     * 查询某个人在某个参保月里,有没有某个月的补收\补缴记录,有返回参保管理Id 无返回空串
     *
     * @param supplementType 补交类型(1:补收 2：补缴)
     * @param year           年
     * @param month          月
     * @param empId          员工Id
     * @param monthId        参保月
     * @param companyId      公司Id
     * @param siteId         站点
     * @return 参保月Id 或者空串
     */
    String selectEmpIsHaveFillCollect(String supplementType, String year, String month, String empId, String monthId, String companyId, String siteId);


    /**
     * 查询人员根据员工社保状态分组
     *
     * @param startYear    开始年
     * @param startMonth   开始月
     * @param endYear      结束年
     * @param endMonth     结束月
     * @param companyId    公司Id
     * @param isAcrossYear 是否跨年
     * @param siteId       站点
     * @return monthId列表
     */
    Map<String, Long> selectIncreaseDecreaseCount(String startYear, String startMonth, String endYear,
                                                  String endMonth, String companyId, Boolean isAcrossYear, String siteId);

    /**
     * 查询某个人的所有正常应缴,和补收社保过的时间
     *
     * @param empId     员工Id
     * @param companyId 公司Id
     * @param siteId    站点
     * @return 的hi见列表
     */
    List<Date> selectEmpIsHaveFillCollectAndNormalDate(String empId, String companyId, String siteId);

    /**
     * 小程序端个人查询社保详情
     *
     * @param pageSize  pageSize
     * @param pageNo    pageNo
     * @param tokenUser 当前登录人
     * @return 社保详情
     */
    Page<EmpSocSmallProgramVO> userEmpSocInfoForMini(Integer pageSize, Integer pageNo, TokenUser tokenUser);

    /**
     * 查询某个员工的参保记录
     *
     * @param empId     员工Id
     * @param tokenUser 当前用户
     * @return 是否参保
     */
    EmpSocInfoVO findEmpHaveSocInfo(String empId, TokenUser tokenUser);

    /**
     * 查询某个员工的参保记录
     *
     * @param empId     员工Id
     * @param tokenUser 当前用户
     * @return 是否参保
     */
    Boolean findEmpHaveInfo(String empId, TokenUser tokenUser);

    /**
     * 查询某几个参保月中,使用某参保方案的人员
     *
     * @param companyId   公司Id
     * @param monthIdList 参保月Id列表
     * @param socProgId   参保方案Id
     * @param siteId      站点
     * @return 参保信息
     */
    List<EmpSocInfoDO> selectUpdateFillDifferenceEmp(String companyId, List<String> monthIdList, String socProgId, String siteId);

    /**
     * 查询某个参保月中的某一个人的一条正常参保的记录
     *
     * @param monthId   参保月Id
     * @param empId     员工Id
     * @param companyId 公司Id
     * @param tokenUser 当前用户
     * @return 参保信息
     */
    EmpSocInfoDO selectEmpSocInfoByEmpIdAndMonthIdNormal(String monthId, String empId, String companyId, TokenUser tokenUser);

    /**
     * 查询某个参保月中的某一个人的一条调整计划/补收的记录
     *
     * @param payCostType 缴费类型
     * @param monthId     参保月Id
     * @param empId       员工Id
     * @param companyId   公司Id
     * @param tokenUser   当前用户
     * @param year        年
     * @param month       月
     * @return 参保信息
     */
    EmpSocInfoDO selectEmpSocInfoByEmpIdAndMonthIdDifCol(String monthId, String empId, String companyId, String year,
                                                         String month, Integer payCostType, TokenUser tokenUser);

    /**
     * 填充部分empSocInfoDO属性
     *
     * @param empSocInfoDO 需要填充的对象
     * @param monthId      参保月Id
     * @param year         年
     * @param month        月
     * @param companyId    公司id
     * @param payCostType  缴费类型
     * @param empId        员工Id
     */
    void syncFillEmpSocInfo(EmpSocInfoDO empSocInfoDO, String monthId, String year,
                            String month, String companyId, String empId, String payCostType);

    /**
     * 查询参保方案使用人数
     *
     * @param socProgId 参保方案Id
     * @return 使用人数
     */
    int selectSocProgEmpCount(String socProgId);

    /**
     * 查询参保方案使用人数
     *
     * @param socProgIds 参保方案Id
     * @return 使用人数
     */
    List<EmpSocInfoDO> selectBySocProgIds(List<String> socProgIds);

    /**
     * 查询参保月的参保信息Id
     *
     * @param monthIds 参保月数组
     * @return Id列表
     */
    List<EmpSocInfoDO> selectByMonthIds(String[] monthIds);

    /**
     * 查询当前月所有增减员未确认的人员
     *
     * @return 增减员未确认的人员
     */
    List<EmpSocInfoDO> selectAllNotConfirmed();

    /**
     * 查询员工的参保信息
     *
     * @param empId     员工Id
     * @param tokenUser 当前用户
     * @return 参保信息
     */
    List<EmpSocInfoDO> selectByEmpId(String empId, TokenUser tokenUser);


    /**
     * 给客户明细表提供员工某月社保公积金费用
     *
     * @param yearly    年
     * @param monthly   月
     * @param empId     员工Id
     * @param companyId 公司Id
     * @param tokenUser 当前用户
     * @return 组装的参保信息
     */
    EmpSocInfoVO selectEmpSocInfoWithCustomerDetails(Integer yearly, Integer monthly, String empId,
                                                     String companyId, TokenUser tokenUser);


    /**
     * 给客户明细表提供员工某月社保公积金费用
     *
     * @param yearly        年
     * @param monthly       月
     * @param companyIdList 公司Ids
     * @param tokenUser     当前用户
     * @return 组装的参保信息
     */
    List<EmpSocInfoVO> selectEmpSocInfoWithCustomerDetails(Integer yearly, Integer monthly,
                                                           List<String> companyIdList, TokenUser tokenUser);

    /**
     * 根据Id列表查询
     *
     * @param idList    参保信息Id列表
     * @param tokenUser 当前用户
     * @return 参保信息
     */
    List<EmpSocInfoDO> selectByIdList(List<String> idList, TokenUser tokenUser);

    /**
     * 根据Id列表查询并往里面设置身份证号
     *
     * @param idList    参保信息Id列表
     * @param tokenUser 当前用户
     * @return 参保信息
     */
    List<EmpSocInfoVO> selectByIdListAndSetIdCard(List<String> idList, TokenUser tokenUser);


    /**
     * 根据Id删除,彻底删除,社保子项也删
     *
     * @param id id
     */
    Integer deleteById(String id);

    /**
     * 查看员工是否有一条未确认的参保记录
     *
     * @param empId     员工Id
     * @param tokenUser 当前用户
     * @return 参保记录
     */
    EmpSocInfoDO selectEmpSocInfoNotConfirm(String empId, TokenUser tokenUser);

    /**
     * 查询员工参保月下的正常参保记录
     *
     * @param empId     员工Id
     * @param monthId   参保月Id
     * @param tokenUser 当前用户
     * @return 参保记录
     */
    EmpSocInfoDO selectInfoByMonthId(String empId, String monthId, TokenUser tokenUser);

    /**
     * 查询员工参保月下的正常参保记录
     *
     * @param empId     员工Id
     * @param year      年
     * @param month     月
     * @param tokenUser 当前用户
     * @return 参保记录
     */
    EmpSocInfoDO selectInfoByYearAndMonth(String empId, String year, String month, TokenUser tokenUser);

    /**
     * 设置人员状态
     *
     * @param empSocInfoListVO 参保信息
     * @param year             年
     * @param month            月
     * @param siteId           站点
     */
    void setPersonStatus(EmpSocInfoListVO empSocInfoListVO, String year, String month, String siteId);

    /**
     * 查询传入参保月中使用某方案的人员,或者补收补缴传入年月的人
     *
     * @param monthId  参保月Id
     * @param schemeId 方案Id
     * @param year     年
     * @param month    月
     * @param siteId   站点
     * @return 参保信息
     */
    List<EmpSocInfoDO> selectInfoByMonthAndScheme(String monthId, String schemeId, String year, String month, String siteId);

    /**
     * 查询某参保月里的所有人
     *
     * @param empSocInfoQuery 查询参数
     * @param tokenUser       当前用户
     * @return 参保记录
     */
    List<EmpSocInfoListVO> selectAllByMonthId(EmpSocInfoQuery empSocInfoQuery, TokenUser tokenUser);

    /**
     * 查询某参保月里的所有人
     *
     * @param bachSaveList 保存数据
     */
    void bachSave(List<EmpSocInfoDO> bachSaveList);

    /**
     * 参保月查询动态表头
     *
     * @param headerFieldsSocQuery 查询条件
     * @param tokenUser            当前用户
     * @return 动态表头
     */
    HeaderFieldsVO getDynamicHead(HeaderFieldsSocQuery headerFieldsSocQuery, TokenUser tokenUser);

    /**
     * 根据 员工Id 更新这些员工的离职状态
     *
     * @param empIdList    员工Id列表
     * @param whetherLeave 是否离职
     * @param monthIdList  参保月Id列表
     * @param tokenUser    当前用户
     */
    void updateWhetherLeave(List<String> empIdList, Boolean whetherLeave,
                            List<String> monthIdList, TokenUser tokenUser);

    /**
     * 查询某参保月下正常应缴的数据
     *
     * @param monthId   参保月Id
     * @param tokenUser 当前用户
     * @return 数据
     */
    List<EmpSocInfoDO> selectNormalInfoByMonthId(String monthId, TokenUser tokenUser);

    /**
     * 查询对应参保月对应员工正常应缴的数据
     *
     * @param query     查询条件
     * @param tokenUser 当前用户
     * @return 数据
     */
    List<EmpSocInfoListVO> getNormalInfoByMonthEmpList(SocPlanDispatchUserQuery query, TokenUser tokenUser);

    /**
     * 社保总览社保数据查询
     *
     * @param query     查询条件
     * @param tokenUser 当前用户
     * @return 数据
     */
    List<EmpSocInfoListVO> getInfoByMonthCompanyList(SocPlanDispatchUserQuery query, TokenUser tokenUser);

    /**
     * 根据用工单位和参保月查询参保记录
     *
     * @param companyId 用工单位Id
     * @param monthId   参保月Id
     * @param siteId    站点
     * @return 参保记录
     */
    List<EmpSocInfoDO> selectByCompanyAndMonthId(String companyId, String monthId, String siteId);
}


